#ifndef CHESSAPP_H
#define CHESSAPP_H

#include <fstream>
#include <cmath>

//resource manager stuff
#include "ResourcesManager.h"

//message stuff
#include "MessageQueryer.h"
#include "MessageDispatcher.h"
#include "GlobalMessage.h"

//tool stuff
#include "Logger.h"
#include "InitializeParameter.h"
#include "d3dapp.h"

//scene manager stuff
#include "SceneManager.h"
#include "SceneNode.h"
#include "Camera.h"

//boost stuff
#include <boost/thread/thread.hpp>
#include <boost/thread/mutex.hpp>

//opening screen
#include "OpeningScreen.h"

//chess stuff
#include "Chess.h"
#include "BoardVertexInfo.h"
#include "ChessBoard.h"

class ChessApp :
	public D3DApp
{
public:
	ChessApp(HINSTANCE hInstance);
	virtual ~ChessApp(void);

	virtual void initApp();
	virtual void onResize();
	virtual void updateScene(float dt);
	virtual void drawScene(); 
	virtual LRESULT msgProc(UINT msg, WPARAM wParam, LPARAM lParam);
	virtual void calculateAI();

private:
	D3DXVECTOR3				m_EyePos;
	D3DXMATRIX				m_matView;
	D3DXMATRIX				m_matProj;

	Chess					m_Chess;
	InitializeParameter		m_InitializeParameter;
	SceneManager			m_SceneMgr;

};

#endif